﻿using System;
using System.Runtime.InteropServices;

namespace Alex.Library.Win32
{
    /// <summary>
    /// Win32 SDK中与窗口相关的API
    /// </summary>
    public sealed class WindowApi
    {
        /// <summary>
        /// 显示窗口
        /// </summary>
        /// <param name="hwnd">窗口句柄，要向这个窗口应用由nCmdShow指定的命令</param>
        /// <param name="nCmdShow">
        /// 为窗口指定可视性方面的一个命令。请用下述任何一个常数
        /// SW_HIDE: 隐藏窗口，活动状态给令一个窗口
        /// SW_MINIMIZE: 最小化窗口，活动状态给令一个窗口
        /// SW_RESTORE: 用原来的大小和位置显示一个窗口，同时令其进入活动状态
        /// SW_SHOW: 用当前的大小和位置显示一个窗口，同时令其进入活动状态
        /// SW_SHOWMAXIMIZED: 最大化窗口，并将其激活
        /// SW_SHOWMINIMIZED: 最小化窗口，并将其激活
        /// SW_SHOWMINNOACTIVE: 最小化一个窗口，同时不改变活动窗口
        /// SW_SHOWNA: 用当前的大小和位置显示一个窗口，不改变活动窗口
        /// SW_SHOWNOACTIVATE: 用最近的大小和位置显示一个窗口，同时不改变活动窗口
        /// SW_SHOWNORMAL: 与SW_RESTORE相同
        /// </param>
        /// <returns></returns>
        [DllImport("user32.dll")]
        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

        /// <summary>
        /// 查询窗口
        /// </summary>
        /// <param name="lpClassName">指向包含了窗口类名的空中止（C语言）字串的指针；或设为零，表示接收任何类</param>
        /// <param name="lpWindowName">指向包含了窗口文本（或标签）的空中止（C语言）字串的指针；或设为零，表示接收任何窗口标题</param>
        /// <returns></returns>
        [DllImport("user32.dll")]
        public static extern int FindWindow(String lpClassName, String lpWindowName);
    }
}
